# -*- coding: utf-8 -*-


# def h():
#     print('To be brave')
#     yield 5
#
# h()
# 可以看到，调用h()之后，print 语句并没有执行！这就是yield，那么，如何让print 语句执行呢？


def h():
    print ('Wen Chuan')
    yield 5
    print ('Fighting!')

c = h()
c.__next__()
# c.next()调用后，h()开始执行，直到遇到yield 5
# Google后发现，在python3.x版本中，python2.x的g.next()函数已经更名为g.__next__()
# c.__next__()
# 当我们再次调用c.next()时，会继续执行，直到找到下一个yield表达式。由于后面没有yield了，因此会拋出异常：
# StopIteration

# 其他
# print(c)                        #   <generator object h at 0x10f7bd308>
# print(c.__next__())             #   c.__next__()返回是5
# next(c)                         #   和c.__next__()一样
